SPOOL 命令使用实例【oracle导出纯文本格式文件】 | 您所在的位置:网站首页 › oracle 导出 文本 › SPOOL 命令使用实例【oracle导出纯文本格式文件】 |
首先介绍一下
spool的参数含义
SET echo off --在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句;
SET feedback off --是否回显本次sql命令处理的记录条数,缺省为on; SET heading off --是否显示列标题,缺省为on;
SET pagesize 50000 --设置每页有多少行数,缺省为14。当值设为0时,输出内容为一页且不显示列标题,为了避免分页,我们通常可设定为0。 SET termout off --是否在屏幕上显示输出的内容,或脚本中的命令的执行结果,缺省为on;
SET trimout on; --去除标准输出每行后面多余的空格,缺省为off;
SET timing off --显示每个sql语句花费的执行时间;
SET trimspool on --去除重定向(spool)输出每行的拖尾空格,缺省为off; SET NULL text --显示时,用text值代替NULL值; SET serveroutput off --是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息;--编写存储过程时,大多会将必要的信息输出; SET newpage none --设置页与页之间的分隔{1|n|NONE};当值为0时在每页开头有一个小的黑方框;当值为n时在页和页之间隔着n个空行;当为none时,会在页和页之间没有任何间隔; SET linesize 1000 --设置一行可以容纳的字符数{80|n};输出内容大于设置的行可容纳的字符数,则折行显示.据实际字符设置,过大导出速度慢; SET wrap on --输出行长度大于设置行长度时(用set linesize n命令设置);值为on时,多余的字符另起一行显示,否则多余的字符将被切除,不予显示;
SET verify off --是否显示替代变量被替代前后的语句;
SET colsep' '; --域输出分隔符; ------------------------------------------------------------------------------------------------------ 导出文本数据的建议格式: SQL*PLUS环境设置-- SET echo off --在用start命令执行一个sql脚本时,不显示脚本中正在执行的SQL语句 SET heading off --不显示字段的名称 SET pagesize 0 --设置输出每页行数,为了避免分页,可设定为0。设置为0时,输出内容为一页且不显示列标题具有SET heading off 包含的功能。 SET newpage none --页与页之间没有分隔 SET trimout on --去除标准输出每行后面多余的空格 SET trimspool on --去除重定向(spool)输出每行的拖尾空格 SET linesize 1000 --设置一行可以容纳的字符数 SET feedback off --是否回显本次sql命令处理的记录条数,缺省为on;
工作运用时导出文本数据的常用格式: SET echo off SET pagesize 0 SET feedback off SET trimout on SET trimspool on SET linesize 1000 spool路径+文件名 需要执行的SQL代码 spool off
注:linesize要稍微设置大些,免得数据被截断,它应和相应的trimspool 结合使用防止导出的文本有太多的尾部空格。但是如果linesize设置太大,会大大降低导出的速度,另外在WINDOWS下导出最好不要用PLSQL导出,速度比较慢,直接用COMMEND下的SQLPLUS命令最小化窗口执行。
实例
要求 ①导出的过程不在SQL*PLUS屏幕上显示 ②导出的文本中不含有执行的SQL命令 ③导出的文本中不含有字段名 ④导出的文本中使用逗号(英文)作为字段的分隔符 ⑤导出的文本中每行长200个字符 ⑥导出的文本中每页999行 ⑦导出的文本中每行后面的空格必须被截取 编写脚本txt_format.sql --set部分设置导出的文本格式 set echo off --关闭脚本中正在执行的SQL语句的显示 set feedback off --关闭本次sql命令处理的记录条数,默认为on即去掉最后的已经选择的行数 set verify off --可以关闭和打开提示确认信息 set heading off --关闭标题的输出设置为off就去掉了select结果的字段名,只显示数据 set term off --不在屏幕上输出执行结果 set trimspool on --将每行后面多余的空格去掉【linesize-实际字符数=多余空格】 set trimout on --去除标准输出每行后面多余的空格 set linesize 200 --设置每行最多显示200个字符 set pagesize 0 --设置每页最多显示999行记录 set termout off --屏幕不显示查询数据 --@/home/oracle/leonarding/get_table.sql --设置导出哪个表里的数据和导出的样子,这是第二种方法 spool ls_test.txt --where is file_name[.ext] [CRE[ATE]|REP[LACE]|APP[END]] select rnc_id||'|'||rnc_label_cn||'|'||rnc_label_en from rnc; --只有关闭spool导出操作,才会在输出文件中看到输出内容,这句话不能写在spool off后面会报错 spool off exit
注:请注意上面的两个地方:set部分和spool部分,前者用于设置导出的文本格式,后者再次执行一个sql脚本:get_table.sql进行导出。下面我们再看另一个脚本get_table.sql select rnc_id||'|'||rnc_label_cn||'|'||rnc_label_en from rnc; 那么我们来看一下结果ls_test.txt 876947945|TJRNC04_260|TJRNC04_260 1128405375|TJRNC03_259|TJRNC03_259 1723122318|TJRNC05_261|TJRNC05_261 4290614068|TJRNC06_262|TJRNC06_262 145277785|TJRNC14_270|TJRNC14_270 96954|TJRNC02_258|TJRNC02_258 96956|TJRNC10_266|TJRNC10_266 96907|TJRNC08_264|TJRNC08_264 96926|TJRNC09_265|TJRNC09_265 96930|TJRNC12_268|TJRNC12_268 96932|TJRNC11_267|TJRNC11_267 96934|TJRNC13_269|TJRNC13_269 96946|TJRNC01_257|TJRNC01_257 96948|TJRNC15_271|TJRNC15_271 96950|TJRNC16_272|TJRNC16_272 96952|TJRNC17_273|TJRNC17_273 96906|TJRNC07_263|TJRNC07_263 来源:以下的文章主要介绍的是如何正确的把Oracle数据导出成Txt 的格式,Oracle数据导出成Txt 在实际应用中的比例还是比较常见的,以下的文章主要是对实际操作方案的描述,以下就是正文的主要内容的描述。 Oracle数据库提供的SQL功能很好很强大,用得越多越觉得自己浅薄无知。 上周做系统演示时需要手工制造一些文本数据充当数据源,想偷偷懒就用了Toad工具直接查询后导出成csv格式。今天正好有点时间,整理了一下思路,用sql去实现文本数据的生成。写了大致框架,有空时再来完善吧。 步骤如下: 新建一个sql脚本 d:\czrk.sql,代码如下: SET echo off SET feedback off SET newpage none SET pagesize 50000 SET linesize 20000 SET verify off SET pagesize 0 SET term off SET trims ON SET heading off SET trimspool ON SET trimout ON SET timing off SET verify off SET colsep | spool d:\czrk.txt SELECT sfzh || ',' || xm || ',' || xb || ',' || csrq || ',' || mz|| ',' || xzqh|| ',' || jzdz FROM m_czrk WHERE rownum@d:\czrk.sql这样就在d盘下生成了一万条数据了。 以上的相关内容就是对把Oracle数据导出成Txt格式的介绍,望你能有所收获。 来源:
|
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |